package com.im.service.conversation.service;

import com.im.common.model.RestResponse;
import com.im.common.model.SyncReq;
import com.im.common.model.SyncResp;
import com.im.common.model.message.MessageReadedContent;
import com.im.service.conversation.model.DeleteConversationReq;
import com.im.service.conversation.model.UpdateConversationReq;

/**
 * 会话服务接口
 */
public interface ConversationService {

    /**
     * 将会话 ID 转换为字符串形式
     *
     * @param type   会话类型
     * @param fromId 发送者 ID
     * @param toId   接收者 ID
     * @return 转换后的会话 ID 字符串
     */
    String convertConversationId(Integer type, String fromId, String toId);

    /**
     * 将消息标记为已读
     *
     * @param messageReadedContent 消息已读内容
     */
    void messageMarkRead(MessageReadedContent messageReadedContent);

    /**
     * 删除会话
     *
     * @param req 删除会话请求
     * @return 删除结果响应
     */
    void deleteConversation(DeleteConversationReq req);

    /**
     * 更新会话，包括置顶或免打扰
     *
     * @param req 更新会话请求
     * @return 更新结果响应
     */
    void updateConversation(UpdateConversationReq req);

    /**
     * 同步会话集合
     *
     * @param req 同步请求
     * @return 同步结果响应
     */
    SyncResp syncConversationSet(SyncReq req);
}